/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.value.userobject;

import base.function.CStringFunction;
import base.value.CValue;
import parser.CCase;

public class CName extends CStringFunction {
	@Override
	public void Init() {
		int[] Array = { 1, 2 };
		AssertParam( Array );
	}
	
	
	
	@Override
	public String ToString() {
		CValue Value = Param[ 0 ].GetValue();
		int Base = 1;
		if ( Param.length == 2 ) {
			Base = Param[ 1 ].ToInt();
			if ( Base < 1 || Base > 12 ) Error( "Неверный номер падежа (" + Base + ") в функции \"Название\"" );
		}
		switch( Value.GetType() ) {
			case UserObject:
				return Value.ToObject().BaseData.Name[ Base - 1 ];
			case String:
				if ( Param.length == 1 ) return Param[ 1 ].ToString();
				return CCase.ChangeTextCase( Value.ToString().replaceAll( "\\(\\*", "{" ).replaceAll( "\\*\\)", "}" ), Base - 1 );
		}
		Error( "Первый параметр функции ''Название'' должен быть объектом или строкой" );
		return "";
	}
}
